Various techniques exist to reverse engineer software or hardware devices. Various techniques may be applied to protect hardware or software; however, physical destruction, hardware cloaking, and code obfuscation are often ineffective against interface-based tampering. Software integrity techniques often utilize executable comparisons, which may focus on the comparison of entire executable programs for similarities, and may not be able defend against real-time attacks.
Modern computing assets often present interface-based attack surfaces that may be vulnerable to tampering without any physical intrusion. Known host-based assurance and anti-tamper techniques may rely upon a priori knowledge, such as attack signatures, as well as the integrity of the system being defended. However, such static techniques may be vulnerable to multiple attacks. Accordingly, interest in preventing reverse engineering and device tampering has increased due to the widespread adoption of computing technologies and the large amount of data that may be subject to exploitation by malicious entities.